草庐IT

C++ ifstream 到 char *

全部标签

c++ - 如何在 C++ 中将 .txt 文件复制到 char 数组

我试图将整个.txt文件复制到一个字符数组中。我的代码有效,但它忽略了空格。因此,例如,如果我的.txt文件读取“我喜欢馅饼”并将其复制到myArray,如果我使用for循环计算我的数组,我会得到“ILikePie”这是我的代码#include#include#includeusingnamespacestd;intmain(){intarraysize=100000;charmyArray[arraysize];charcurrent_char;intnum_characters=0;inti=0;ifstreammyfile("FileReadExample.cpp");if(my

c++ - 为什么 std::string 不提供到 const char* 的转换?

这更多是一个政策或历史问题。为什么决定不为std::string提供constchar*转换?是否担心有人会执行printf("%s",s)并相信它会自动转换?有没有关于这个问题的公开讨论? 最佳答案 自动施法几乎总是邪恶的。如果对constchar*进行强制转换,std::string也可能会自动强制转换为其他指针类型,这可能导致难以发现错误。有一个返回constchar*的c_str()方法,所以你仍然可以实现你所需要的。此外,类型转换在逻辑上不正确-std::string不等同于constchar*。

c++ - 将字符串转换为 char*

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Convertstd::stringtoconstchar*orchar*可能缺少一个&或类似的东西(我是cpp的菜鸟)。我有stringR="somthing";char*S;我如何将R复制到S 最佳答案 有很多方法。这里至少有五个:/**Anexampleofconvertingstd::stringto(const)char*usingfive*differentmethods.Errorcheckingisemittedforsimplicity.

c++:ifstream打开问题,为文本文件名传递字符串

这个问题在这里已经有了答案:Nomatchingfunction-ifstreamopen()(1个回答)关闭7年前。我正在尝试将字符串从main传递到另一个函数。此字符串是需要打开的文本文件的名称。据我所见,我传递的字符串很好,但是当我尝试使用ifstream.open(textFileName)时,它并不能正常工作。但是当我手动将其硬编码为ifstream.open("foo.txt")时,它工作得很好。我需要多次使用这个函数,所以我希望能够传入一串文本文件名..这是我的主要内容#ifndefDATA_H#defineDATA_H#include"Data.h"#endif#ifn

c++ - 是否可以合法地重载字符串文字和 const char*?

是否可以在C++11中重载constchar*和字符串文字(constchar[])?这个想法是避免在已知字符串长度时调用strlen来查找字符串长度。此代码段在G++4.8和Clang++3.2上中断:#include#include#includetemplatevoidlength(constT(&data)[N]){printf("%u[]\n",N-1);}templatevoidlength(constT*data){printf("*%u\n",(unsigned)strlen(data));}intmain(){length("hello");constchar*p="

c++ - 从 C 到 C++ 的常量结构中的 char 数组的静态初始化

我有一些现有的C代码:externconststructsockaddr_unaddr={.sun_family=AF_UNIX,.sun_path="myreallylongpath"};其中sun_path是一个字符数组。这曾经在旧版本的GCC中编译为C。我现在已将其转换为C++并使用GCCv4.7.2。我不断收到错误:"C99designator'sun_path'outsideaggregateintializer"难道我在C++中不能做我正在做的事情,还是语法与旧C不同? 最佳答案 指定初始化器是在C99中引入的,GCC也

c++ - vector<char> 优于字符串的好处?

这个问题与thisquestion相关,但并不完全相同。.使用std::vector有什么好处吗?而不是std::string保存任意二进制数据,除了与可读性相关的问题?即与字符串相比,使用vector执行哪些任务更容易/更高效/更好? 最佳答案 除了可读性(不应低估)之外,我还可以想到在std::vector上使用std::string时会出现一些小的性能/内存问题:一些现代std::string实现使用smallstringoptimization.如果存储的数据大于string的内部缓冲区,就会变成悲观化,降低复制、移动和sw

c++ - 将 BSTR 转换为 char*

有人知道如何将BSTR转换为char*吗?更新:我试过这样做,但不知道是对还是错。char*p=_com_util::ConvertBSTRToString(URL->bstrVal);strcpy(testDest,p); 最佳答案 您的代码没问题。ConvertBSTRToString就是这样做的。至于strcpy,testDest需要足够大以容纳p指向的字符串。请注意,由于ConvertBSTRToString分配了一个新字符串,因此您需要在后面的某个地方释放它。完成后,请确保您这样做:delete[]p;但有几点需要注意(从

c++ - 裸 char32_t 是签名的还是未签名的?

同样,裸char16_t是有符号的还是无符号的?是否定义了实现? 最佳答案 来自标准(C++11前草案n3290,或C++11后草案n3337)§3.9.1基本类型:Typeschar16_tandchar32_tdenotedistincttypeswiththesamesize,signedness,andalignmentasuint_least16_tanduint_least32_t,respectively,in,calledtheunderlyingtypes.uint_least16_t和uint_least32_t

c++ - 将字节数组(char数组)转换为整数类型(short、int、long)

我想知道在将字节数组转换为短/整数/长时系统字节序是否重要。如果代码在big-endian和little-endian机器上运行,这样做会不会不正确?shorts=(b[0] 最佳答案 是的,字节顺序很重要。在littleendian中,最重要的字节位于short或int的上半部分-即short的8-15位和int的24-31位。对于大端,字节顺序需要颠倒:shorts=((b[1]请注意,这假定字节数组是小端序。字节数组和整数类型的字节序和转换不仅取决于CPU的字节序,还取决于字节数组数据的字节序。建议将这些转换包装在能够知道(通